package com.yuju.common.core.service;

import java.util.List;

import com.yuju.common.PageModel;
import com.yuju.common.Result;

/**
 * 
 * 类名：BaseService  <br />
 *
 * 功能：通用业务逻辑接口
 * 泛型接口：V 表示VO，P 表示PO，PK表示该操作实体主键类型，如：Integer
 * @author : xuehj <br />
 * @Date : 2017年9月12日 下午3:26:33  <br />
 * @version : 1.1 <br />
 */
public interface IBaseService<M, P, PK> {
	
	/**
	 * 已过时，请使用PageModel list(M model, Integer currentPage, Integer rows)
	 * @param model
	 * @param currentPage
	 * @param rows
	 * @return
	 */
	@Deprecated
	Result getPageList(M model, int currentPage, int rows);
	
	PageModel pageList(M model, Integer currentPage, Integer rows);
	
	/**
	 * 功能：查询列表<br/>
	 * @param page 当前页数
	 * @param rows 每页显示记录数
	 * @author xuehj
	 * @Date 2017年9月12日 下午3:26:09 <br/>
	 */
	//List<P> list(M model, int page, int rows);
	
	/**
	 * 功能：查询列表<br/>
	 * @param page 当前页数
	 * @param rows 每页显示记录数
	 * @author xuehj
	 * @Date 2017年9月12日 下午3:26:09 <br/>
	 */
	List<M> list(M model);

	/**
	 * 功能：保存对象<br/>
	 * @param model Model对象
	 * @author xuehj
	 * @Date 2017年9月12日 下午4:22:05 <br/>
	 */
	int save(M model);

	/**
	 * 功能：更新对象<br/>
	 * @param vo VO对象
	 * @author xuehj
	 * @Date 2017年9月12日 下午4:22:24 <br/>
	 */
	int update(M model);

	/**
	 * 功能：更新对象<br/>
	 * @param vo VO对象
	 * @author xuehj
	 * @Date 2017年9月12日 下午4:22:24 <br/>
	 */
	int updateSelective(M model);

	/**
	 * 功能：删除对象<br/>
	 * @param id 主键ID
	 * @author xuehj
	 * @Date 2017年9月12日 下午4:22:39 <br/>
	 */
	int del(PK id);

	/**
	 * 功能：查找对象<br/>
	 * @param model Model对象
	 * @author xuehj
	 * @Date 2017年9月12日 下午4:22:58 <br/>
	 */
	M find(M model);
	
	M findById(PK id);
	
	int getCount(M model);
}
